package utilidades;

//Versor es una vector que tiene una coordenada X y una coordenada Y
//y cuya norma es 1 durante toda la vida del objeto.
public class Direccion {

	private double direccionEnX;
	private double direccionEnY;
	 
	//Contructor: crea un versor a partir de una posicion 
	public Direccion(Posicion unaPosicion) {
		direccionEnX = unaPosicion.getX();
		direccionEnY = unaPosicion.getY();
		direccionEnX /= unaPosicion.distancia(new Posicion(0,0));
		direccionEnY /= unaPosicion.distancia(new Posicion(0,0));		
	}
	
	//Contructor: crea una direccion entre dos objetos posicionables
	public Direccion(Posicion posicionInicial, Posicion posicionFinal){
		direccionEnX = posicionFinal.getX() - posicionInicial.getX();
		direccionEnY = posicionFinal.getY() - posicionInicial.getY();
		direccionEnX /= posicionFinal.distancia(posicionInicial);
		direccionEnY /= posicionFinal.distancia(posicionInicial);
	}
	
	//Devuelve la coordenada Y.
	public double getX() {
		return direccionEnX;
	}
	
	//Devuelve la coordenada X.
	public double getY() {
		return direccionEnY;
	}
	
	// Invierte la coordenada X del versor.
	public void invertirDireccionX(){
		
		direccionEnX = - direccionEnX;
	}
	
	// Invierte la coordenada Y del versor.
		public void invertirDireccionY(){
			
			direccionEnY = - direccionEnY;
		}
	
	// Se obtiene el versor invertido.
	public Direccion obtenerVersorOpuesto(){
	
		double direccionNuevaX = (-direccionEnX);
		double direccionNuevaY = (-direccionEnY);
		
		Direccion direccionFinal = new Direccion(new Posicion(direccionNuevaX,direccionNuevaY));
		
		return direccionFinal;
		
	}
	
	
	//Combierte la direccion en un string.
	public String toString( ) {
		return new Double(getX( )).toString( ) + ";" + new Double(getY( )).toString( );
	}
	
}